home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 4
/
Aminet 4 - November 1994.iso
/
aminet
/
comm
/
misc
/
avmnfaxsrc1_33.lha
/
callback.c
< prev
next >
Wrap
C/C++ Source or Header
|
1994-05-25
|
1KB
|
49 lines
/* $Header: pd:zvmrcs/callback.c,v 1.1 1993/04/07 18:47:36 rvillari Exp $ */
#include <stdlib.h>
#include "callback_proto.h"
/* EXPORTS */
struct CallBack initCallBack; /* this is just an initialization */
void deleteCallBack(struct CallBack* cb) {
cb->numCallBacks--;
}
void addCallBack(struct CallBack* cb, ULONG match, enum ReturnStatus (*function)(void)) {
int count = cb->numCallBacks;
/* need some safety here */
if (count == 5) exit(20);
cb->signalMatch[count] = match;
cb->functionPtr[count] = function;
cb->numCallBacks++;
}
enum ReturnStatus processCallBack(struct CallBack* cb, ULONG signalsReceived) {
int i;
enum ReturnStatus status;
for (i = 0; i < cb->numCallBacks; i++) {
if (signalsReceived & cb->signalMatch[i]) {
SetSignal(0L, cb->signalMatch[i]);
status = cb->functionPtr[i]();
if (status != Normal) return status;
}
}
return Normal;
}
ULONG callBackSignals(struct CallBack* cb) {
ULONG signals = 0L;
int i;
for (i = 0; i < cb->numCallBacks; i++)
signals |= cb->signalMatch[i];
return signals;
}